home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!lll-winken!csd4.milw.wisc.edu!cs.utexas.edu!rutgers!aramis.rutgers.edu!dartagnan.rutgers.edu!mcgrew
- From: mcgrew@dartagnan.rutgers.edu (Charles Mcgrew)
- Newsgroups: comp.sources.sun
- Subject: v01i034: contool - A new Sunview console message handler
- Message-ID: <Jun.21.13.51.25.1989.29050@dartagnan.rutgers.edu>
- Date: 21 Jun 89 17:51:28 GMT
- Organization: Rutgers Univ., New Brunswick, N.J.
- Lines: 1641
- Approved: mcgrew@aramis.rutgers.edu
-
- Submitted-by: chuck@melmac.harris-atd.com
- Posting-number: Volume 1, Issue 34
- Archive-name: contool2.1
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of shell archive."
- # Contents: Makefile README contool.c contool.man misc.c sample.filter
- # icons icons/console1.icon icons/console1_bad.icon
- # icons/console1_flash.icon icons/contool.icon
- # icons/contool_bad.icon icons/stopsign.icon icons/stopsign_inv.icon
- # Wrapped by chuck@melmac on Fri Feb 10 11:25:37 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile'\"
- else
- echo shar: Extracting \"'Makefile'\" \(702 characters\)
- sed "s/^X//" >'Makefile' <<'END_OF_FILE'
- XBIN = /usr/local/bin
- X
- XMAN = /usr/man/manl
- XMANEXT = l
- X
- X# directory where icons can be found, must end with '/'!
- XICON_DIR = ./icons/
- X
- XOFILES = contool.o misc.o
- X
- X.c.o:
- X cc -O -c -DICON_DIRECTORY=\"$(ICON_DIR)\" $<
- X
- Xcontool: $(OFILES)
- X cc -o contool $(OFILES) -lsuntool -lsunwindow -lpixrect
- X
- Xinstall: contool $(MAN)/contool.$(MANEXT)
- X cp contool $(BIN)
- X chmod 755 $(BIN)/contool
- X
- X$(MAN)/contool.$(MANEXT): contool.man
- X cp -p contool.man $(MAN)/contool.$(MANEXT)
- X
- Xinstall-icons:
- X for i in icons/*.icon; do \
- X cp $$i $(ICON_DIR); \
- X done;
- X
- Xclean:
- X rm -f *~ $(OFILES) contool core
- X
- Xshar:
- X rm -f contool.shar
- X shar -o contool.shar Makefile README contool.c contool.man misc.c sample.filter icons icons/*
- END_OF_FILE
- if test 702 -ne `wc -c <'Makefile'`; then
- echo shar: \"'Makefile'\" unpacked with wrong size!
- fi
- # end of 'Makefile'
- fi
- if test -f 'README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'README'\"
- else
- echo shar: Extracting \"'README'\" \(3733 characters\)
- sed "s/^X//" >'README' <<'END_OF_FILE'
- X Contool Version 2.1
- X
- X Change history:
- X 1.0 20 Jun 88 Original release
- X 1.1 30 Jun 88 Added -p option to pop open when messages
- X arrive. Suggested by Doug Lind
- X (lind@perron.ms.washington.edu).
- X Added alternate icon sets for more attractive
- X appearance when messages arrive. Alternate
- X set two is from David Eckelcamp
- X (eckelcamp@mcc.com).
- X Cleaned up Makefile. Again, courtesy of
- X David Eckelcamp.
- X 2.0 23 Aug 88 Added automatic reload of filters when
- X filter file is modified. Suggested by
- X Craig Musicant (cmusican@stanford.prime.com).
- X Filter strings are now regular expressions.
- X Provided by jqj@hogg.cc.uoregon.edu.
- X Reworked frame menu, based upon diffs posted
- X to sun-source@titan.rice.edu.
- X Added protection from overflowing the text edit
- X window when too many messages arrive.
- X Filters can now be read from any file, not
- X just ~/.contool.
- X 2.1 10 Feb 89 Added logging capability, courtesy of
- X Gregory Bond (gnb@melba.bby.oz.au).
- X
- X Contool will capture and display system console messages with timestamps.
- XIt is a replacement for the standard Sun console, which is created with
- X"cmdtool -C". Contool will flash its icon and beep when messages are written
- Xto the icon, so you can keep it closed on your desktop until a message arrives.
- XYou can modify this beeping and flashing behavior; see the man page for more
- Xdetails.
- X
- X Contool comes with several icons which you can use for different flash
- Xstyles. The default is a flashing stop sign; some of us prefer a little
- Xmonitor whose screen flashes. To achieve this behavior, you can invoke
- X
- X contool -g contool.icon -b contool.icon -f contool_bad.icon
- X
- Xto set the good, bad, and flash icons.
- X
- X You can instruct contool to filter and ignore certain common console
- Xmessages. The man file explains how to create a file of filters in
- X~/.contool; the included sample.filter is how my filters are set up. You
- Xcan modify this to suit yourself, and copy it to ~/.contool.
- X
- X Before building contool, you need to check several site dependencies
- Xin the Makefile and contool.c. These paths are:
- X
- X In Makefile:
- X BIN Where the executable will go, normally
- X /usr/local/bin
- X MANDIR Where the man page will go, normally
- X /usr/man/manl
- X MANEXT The man page extension, usually 'l',
- X for local man pages. You may want to
- X make MANDIR /usr/man/man1, in which case
- X MANEXT should be '1'.
- X
- X ICON_DIRECTORY Where you will keep the contool icons.
- X On our system, this is /usr/local/images.
- X Contool is shipped with this set to "./icons/",
- X so that it will compile in the directory
- X in which you unshar'ed it. Move the icons
- X to your local icon repository, and change
- X this path accordingly. MAKE SURE IT ENDS
- X IN A '/'!
- X
- X In contool.c:
- X You may wish to use an alternate icon set for contool. Simply
- X uncomment the set you want to use as noted in contool.c.
- X
- XOnce you have adjusted these values, just type "make contool" or "make
- Xinstall".
- X
- X Contool honors window command line options, described in suntools(1),
- Xso you can change the default window size, icon position, etc. We like
- Xto bring contool up closed, using "-Wi".
- X
- X Comments, bugs, to me, please. I would be very interested in your
- Ximpressions of contool and any suggestions you might have to make it better.
- XBy the way, there are a few convenient untility routines in misc.c you might
- Xfind useful in other programs you are writing.
- X
- XChuck Musciano
- XAdvanced Technology Department
- XHarris Corporation
- XPO Box 37, MS 3A/1912
- XMelbourne, FL 32902
- X(407) 727-6131
- XARPA: chuck@trantor.harris-atd.com
- END_OF_FILE
- if test 3733 -ne `wc -c <'README'`; then
- echo shar: \"'README'\" unpacked with wrong size!
- fi
- # end of 'README'
- fi
- if test -f 'contool.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'contool.c'\"
- else
- echo shar: Extracting \"'contool.c'\" \(21726 characters\)
- sed "s/^X//" >'contool.c' <<'END_OF_FILE'
- X/************************************************************************/
- X/* Copyright 1988 by Chuck Musciano and Harris Corporation */
- X/* */
- X/* Permission to use, copy, modify, and distribute this software */
- X/* and its documentation for any purpose and without fee is */
- X/* hereby granted, provided that the above copyright notice */
- X/* appear in all copies and that both that copyright notice and */
- X/* this permission notice appear in supporting documentation, and */
- X/* that the name of Chuck Musciano and Harris Corporation not be */
- X/* used in advertising or publicity pertaining to distribution */
- X/* of the software without specific, written prior permission. */
- X/* Chuck Musciano and Harris Corporation make no representations */
- X/* about the suitability of this software for any purpose. It is */
- X/* provided "as is" without express or implied warranty. */
- X/************************************************************************/
- X
- X
- X/************************************************************************/
- X/* */
- X/* contool: capture and display timestamped console i/o */
- X/* */
- X/************************************************************************/
- X
- X#include <stdio.h>
- X#include <fcntl.h>
- X#include <sys/ioctl.h>
- X#include <sys/types.h>
- X#include <sys/stat.h>
- X
- X#include <suntool/sunview.h>
- X#include <suntool/textsw.h>
- X#include <suntool/icon_load.h>
- X
- X/**************** Site dependent parameters ****************************/
- X
- X/* Where the default contool icons are kept. !Must end in '/'! */
- X
- X#if !defined(ICON_DIRECTORY)
- X#define ICON_DIRECTORY "./icons/"
- X#endif
- X
- X/* The default icon names. Alternate sets are shown, and you might want
- X to try these instead of the default set by uncommenting the desired set. */
- X
- X/* This set gives a blinking stop sign when messages arrive. */
- X#define GOOD_ICON "contool.icon"
- X#define BAD_ICON "stopsign.icon"
- X#define INVERSE_ICON "stopsign_inv.icon"
- X
- X/* This set gives a terminal, labelled "Console", in a box. The screen
- X flashes when messages arrive. */
- X/* #define GOOD_ICON "contool.icon" */
- X/* #define BAD_ICON "contool.icon" */
- X/* #define INVERSE_ICON "contool_bad.icon" */
- X
- X/* This set gives a terminal, without a box. Again, the screen flashes
- X when messages arrive. */
- X/* #define GOOD_ICON "console1.icon" */
- X/* #define BAD_ICON "console1_bad.icon" */
- X/* #define INVERSE_ICON "console1_flash.icon" */
- X
- X/*************** End of site dependencies ******************************/
- X
- X#define TOOL_LABEL "<< Console Tool 2.1 >>"
- X
- X#define MAX_FILTERS 64
- X
- X#define strsave(s) ((char *) strcpy(malloc(strlen(s) + 1), s))
- X
- X#define BEEP_COUNT 3
- X#define TS_INTERVAL 60
- X
- X#define NORMAL_MODE 1
- X#define QUIET_MODE 2
- X#define IGNORE_MODE 3
- X
- X#define TEXT_SIZE_LIMIT 32768
- X#define TEXT_SIZE_FUZZ 1024
- X#define TEXT_DELETE_SIZE 1024
- X
- X#define INPUT_BUFFER_SIZE 4096
- X
- X/*************** Stuff that regexp(3) needs ****************************/
- X
- Xstatic regexp_error();
- X
- X#define INIT register char *expbuf = ep, *sp = instring;
- X#define GETC() (*sp++)
- X#define PEEKC() (*sp)
- X#define UNGETC(c) (--sp)
- X#define RETURN(p) {bcopy(expbuf, sp = (char *) malloc(p - expbuf), p - expbuf); return(sp);}
- X#define ERROR(val) {regexp_error(val, instring); return(NULL);}
- X
- X#include <regexp.h>
- X
- X/*************** Things that contool uses ******************************/
- X
- Xstruct f_rec {char *start;
- X char *end;
- X int scircf;
- X int ecircf;
- X int mode;
- X };
- X
- Xchar *ct_usage = "usage: contool [-b <file>] [-c <file>] [-d <size>] [-f <file>] [-g <file>] [-l <size>] [-o <logfile>] [-p] [-r <amt>] [-s <amt>]\n";
- X
- Xstatic Frame bf;
- Xstatic Textsw text;
- Xstatic Icon good, bad, inverse;
- Xstatic struct pixrect *good_pr, *bad_pr, *inv_pr;
- Xstatic Menu_item stop_blink;
- Xstatic Rect open_rect;
- X
- Xstatic char bad_icon[256]; /* -b */
- Xstatic char filter_path[256]; /* -c */
- Xstatic int delete_amt = TEXT_DELETE_SIZE; /* -d */
- Xstatic char inv_icon[256]; /* -f */
- Xstatic char good_icon[256]; /* -g */
- Xstatic int size_limit = TEXT_SIZE_LIMIT; /* -l */
- Xstatic int pop_open = FALSE; /* -p */
- Xstatic int resolution = TS_INTERVAL; /* -r */
- Xstatic int beep_amount = BEEP_COUNT; /* -s */
- X
- Xstatic int bad_is_up;
- Xstatic int beep_count;
- Xstatic int blinking = FALSE;
- Xstatic int event_in_progress = FALSE;
- Xstatic int explicit_filters = FALSE;
- Xstatic struct f_rec filter[MAX_FILTERS];
- Xstatic int filters = 0;
- Xstatic int icon_height;
- Xstatic int icon_width;
- Xstatic FILE *master = NULL;
- Xstatic int old_time = 0;
- Xstatic char *program;
- Xstatic FILE *slave = NULL;
- Xstatic FILE *logfile = NULL;
- X
- Xstatic struct itimerval timer = {{0, 500000}, {0, 500000}};
- X
- X/************************************************************************/
- X/* First, some basic console utility routines */
- X/************************************************************************/
- X
- X/************************************************************************/
- Xstatic acquire_console(path)
- X
- Xchar *path;
- X
- X{
- X if (ioctl(fileno(slave), TIOCCONS, NULL) == -1) {
- X fprintf(stderr, "%s: could not attach %s to /dev/console\n", program, path);
- X exit(1);
- X }
- X}
- X
- X/************************************************************************/
- Xstatic clear_messages()
- X
- X{
- X textsw_reset(text, 0, 0);
- X old_time = 0;
- X}
- X
- X/************************************************************************/
- Xstatic stop_blinking()
- X
- X{
- X notify_set_itimer_func(bf, NULL, ITIMER_REAL, NULL, NULL);
- X window_set(bf, FRAME_ICON, good, 0);
- X blinking = FALSE;
- X menu_set(stop_blink, MENU_INACTIVE, TRUE, 0);
- X}
- X
- X/************************************************************************/
- X/* Now, filter and regular expression handlers */
- X/************************************************************************/
- X
- X/************************************************************************/
- Xstatic internal_message(a, b, c, d, e, f)
- X
- Xint a, b, c, d, e, f;
- X
- X{ char buf[512];
- X
- X sprintf(buf, a, b, c, d, e, f);
- X time_stamp();
- X write_log(buf);
- X do_insertion(buf, strlen(buf));
- X}
- X
- X/************************************************************************/
- Xstatic internal_error(a, b, c, d, e, f)
- X
- Xint a, b, c, d, e, f;
- X
- X{ char buf[512];
- X
- X sprintf(buf, a, b, c, d, e, f);
- X time_stamp();
- X fprintf(stderr, buf);
- X}
- X
- X/************************************************************************/
- Xstatic int match_exp(exp, circ, str)
- X
- Xchar *exp;
- Xint circ;
- Xchar *str;
- X
- X{
- X circf = circ;
- X return(step(str, exp));
- X}
- X
- X/************************************************************************/
- Xstatic regexp_error(val, string)
- X
- Xint val;
- Xchar *string;
- X
- X{ char *msg;
- X
- X switch (val) {
- X case 11 : msg = "range endpoint too large";
- X case 16 : msg = "bad number";
- X case 25 : msg = "\"\\digit\" out of range";
- X case 36 : msg = "illegal or missing delimiter";
- X case 41 : msg = "no remembered search string";
- X case 42 : msg = "\\(\\) imbalance";
- X case 43 : msg = "too many \\(";
- X case 44 : msg = "more than 2 numbers given in \\{\\}";
- X case 45 : msg = "} expected after \\";
- X case 46 : msg = "first number exceeds second in \\{\\}";
- X case 49 : msg = "[] imbalance";
- X case 50 : msg = "regular expression overflow";
- X default : msg = "regular expression compilation error";
- X }
- X internal_error("*** %s: %s in '%s'\n", program, msg, string);
- X}
- X
- X/************************************************************************/
- Xstatic load_filters()
- X
- X{ FILE *f;
- X char buf[256], rbuf[1024], *token[6], *p, *index();
- X int count;
- X struct stat sb;
- X static int load_time = 0;
- X
- X if (stat(filter_path, &sb) == -1) {
- X if (explicit_filters && load_time == 0) {
- X internal_error("*** %s: filter file %s cannot be accessed\n", program, filter_path);
- X load_time = 1;
- X }
- X return;
- X }
- X if (sb.st_mtime > load_time) {
- X for (count = 0; count < filters; count++) {
- X free(filter[count].start);
- X if (filter[count].end)
- X free(filter[count].end);
- X }
- X filters = 0;
- X }
- X else
- X return;
- X
- X if ((f = fopen(filter_path, "r")) != NULL) {
- X while (getline(f, buf, 256) != EOF) {
- X if ((p = index(buf, '#')) != NULL)
- X *p = '\0';
- X if (strlen(buf) == 0 || verify(buf, " "))
- X continue;
- X tokenize(buf, &count, token, 6);
- X if (count == 2 || count == 4) {
- X if (strcmp(lower(token[0]), "ignore") == 0)
- X filter[filters].mode = IGNORE_MODE;
- X else if (strcmp(token[0], "quiet") == 0)
- X filter[filters].mode = QUIET_MODE;
- X else {
- X internal_error("*** %s: invalid contool filter:\n***\t%s\n", program, buf);
- X continue;
- X }
- X if ((filter[filters].start = compile(token[1], rbuf, rbuf+1024, '\0')) == NULL)
- X continue;
- X filter[filters].scircf = circf;
- X if (count == 4)
- X if (strcmp(lower(token[2]), "to") == 0) {
- X filter[filters].end = compile(token[3], rbuf, rbuf+1024, '\0');
- X filter[filters].ecircf = circf;
- X }
- X else {
- X internal_error("*** %s: invalid contool filter:\n***\t%s\n", program, buf);
- X continue;
- X }
- X else
- X filter[filters].end = NULL;
- X filters++;
- X }
- X else
- X internal_error("*** %s: invalid contool filter:\n\t%s\n", program, buf);
- X }
- X fclose(f);
- X internal_message("*** filters loaded from %s\n", filter_path);
- X load_time = sb.st_mtime;
- X }
- X else
- X internal_error("*** %s: could not read filter file %s\n", program, filter_path);
- X}
- X
- X/************************************************************************/
- X/* Various event handlers for the console frame */
- X/************************************************************************/
- X
- X/************************************************************************/
- Xstatic Notify_value blink_proc(me, which)
- X
- Xint *me;
- Xint which;
- X
- X{
- X if (event_in_progress)
- X return(NOTIFY_DONE);
- X if (beep_count > 0) {
- X window_bell(bf);
- X beep_count--;
- X }
- X else if (blinking) {
- X if (bad_is_up)
- X window_set(bf, FRAME_ICON, inverse, 0);
- X else
- X window_set(bf, FRAME_ICON, bad, 0);
- X bad_is_up = !bad_is_up;
- X }
- X if (beep_count == 0 && !blinking)
- X notify_set_itimer_func(bf, blink_proc, ITIMER_REAL, NULL, NULL);
- X return(NOTIFY_DONE);
- X}
- X
- X/************************************************************************/
- Xstatic Notify_value close_proc(frame, event, arg, type)
- X
- XFrame frame;
- XEvent *event;
- XNotify_arg arg;
- XNotify_event_type type;
- X
- X{ int init_closed, curr_closed, is_resize;
- X Notify_value value;
- X Rect *temp;
- X
- X event_in_progress = TRUE;
- X init_closed = (int) window_get(frame, FRAME_CLOSED);
- X is_resize = (event_id(event) == WIN_RESIZE);
- X value = notify_next_event_func(frame, event, arg, type);
- X curr_closed = (int) window_get(frame, FRAME_CLOSED);
- X if (init_closed != curr_closed)
- X if (!curr_closed && blinking) {
- X notify_set_itimer_func(bf, blink_proc, ITIMER_REAL, NULL, NULL);
- X window_set(bf, FRAME_ICON, good, 0);
- X blinking = FALSE;
- X menu_set(stop_blink, MENU_INACTIVE, TRUE, 0);
- X }
- X event_in_progress = FALSE;
- X if (is_resize) {
- X temp = (Rect *) window_get(frame, FRAME_OPEN_RECT);
- X if (temp->r_width <= icon_width && temp->r_height <= icon_height) { /* override spurious resize request */
- X window_set(frame, FRAME_OPEN_RECT, &open_rect, FRAME_CLOSED, FALSE, 0);
- X notify_set_itimer_func(bf, blink_proc, ITIMER_REAL, NULL, NULL);
- X window_set(bf, FRAME_ICON, good, 0);
- X blinking = FALSE;
- X menu_set(stop_blink, MENU_INACTIVE, TRUE, 0);
- X }
- X else /* save away new open rect */
- X open_rect = *temp;
- X }
- X return(value);
- X}
- X
- X/************************************************************************/
- Xstatic Notify_value destroy_proc(frame, status)
- X
- XFrame frame;
- XDestroy_status status;
- X
- X{
- X if (status == DESTROY_CHECKING) {
- X textsw_reset(text, 0, 0);
- X return(NOTIFY_DONE);
- X }
- X else
- X return(notify_next_destroy_func(frame, status));
- X}
- X
- X/************************************************************************/
- X/* Routines which handle capturing and displaying messages */
- X/************************************************************************/
- X
- X/************************************************************************/
- Xstatic write_log(s)
- X
- Xchar *s;
- X
- X{ int t;
- X static char hostname[100] = "";
- X
- X if (logfile) {
- X if (*hostname == NULL)
- X if (gethostname(hostname, 99) != 0)
- X strcpy(hostname, "(unknown)");
- X t = time(0);
- X fseek(logfile, 0L, 2);
- X fprintf(logfile, "%s\t%.16s\t%s", hostname, ctime(&t) + 4, s);
- X fflush(logfile);
- X }
- X}
- X
- X/************************************************************************/
- Xstatic do_insertion(buf, len)
- X
- Xchar *buf;
- Xint len;
- X
- X{ int first, last;
- X
- X while (len > size_limit - ((int) window_get(text, TEXTSW_LENGTH) - TEXT_SIZE_FUZZ)) { /* make some room */
- X first = 1;
- X last = TEXTSW_INFINITY;
- X if (textsw_find_bytes(text, &first, &last, "\n<<<", 4, 0) == -1)
- X if (textsw_find_bytes(text, &first, &last, "\n", 1, 0) == -1)
- X first = delete_amt;
- X textsw_delete(text, 0, first + 1);
- X }
- X window_set(text, TEXTSW_INSERTION_POINT, TEXTSW_INFINITY, 0);
- X textsw_insert(text, buf, len);
- X}
- X
- X/************************************************************************/
- Xstatic time_stamp()
- X
- X{ int t, pos;
- X char buf[5];
- X
- X t = time(0);
- X if (t - old_time >= resolution) {
- X window_set(text, TEXTSW_INSERTION_POINT, TEXTSW_INFINITY, 0);
- X pos = (int) window_get(text, TEXTSW_LENGTH);
- X if (pos != 0) {
- X window_get(text, TEXTSW_CONTENTS, pos - 1, buf, 1);
- X if (buf[0] != '\n')
- X do_insertion("\n", 1);
- X }
- X do_insertion("\n<<< ", 5);
- X do_insertion(ctime(&t), 24);
- X do_insertion(" >>>\n", 5);
- X old_time = t;
- X }
- X}
- X
- X/************************************************************************/
- Xstatic Notify_value input_func(me, fd)
- X
- Xint *me;
- Xint fd;
- X
- X{ char old_c, *s, *t, *index();
- X int i, count, do_blink = FALSE;
- X static int curr_filter = -1, curr_mode = NORMAL_MODE;
- X static char in_buf[INPUT_BUFFER_SIZE + 2];
- X
- X while ((count = read(fileno(master), in_buf, INPUT_BUFFER_SIZE)) >= 0) {
- X in_buf[count] = '\0';
- X while (s = index(in_buf, '\015')) {
- X strcpy(s, s + 1);
- X count--;
- X }
- X for (t = in_buf; *t; *s = old_c, t = s) {
- X if (s = index(t, '\n')) {
- X old_c = *++s;
- X *s = '\0';
- X }
- X else {
- X s = t + strlen(t);
- X old_c = '\0';
- X }
- X if (curr_mode == NORMAL_MODE) {
- X load_filters();
- X for (i = 0; i < filters; i++)
- X if (match_exp(filter[i].start, filter[i].scircf, t)) {
- X if (filter[i].mode == QUIET_MODE) {
- X time_stamp();
- X write_log(t);
- X do_insertion(t, strlen(t));
- X }
- X if (filter[i].end) {
- X curr_mode = filter[i].mode;
- X curr_filter = i;
- X }
- X break;
- X }
- X if (i == filters) {
- X time_stamp();
- X write_log(t);
- X do_insertion(t, strlen(t));
- X do_blink = TRUE;
- X }
- X }
- X else {
- X if (curr_mode == QUIET_MODE) {
- X time_stamp();
- X write_log(t);
- X do_insertion(t, strlen(t));
- X }
- X if (match_exp(filter[curr_filter].end, filter[curr_filter].ecircf, t)) {
- X curr_mode = NORMAL_MODE;
- X curr_filter = -1;
- X }
- X }
- X }
- X }
- X window_set(text, TEXTSW_UPDATE_SCROLLBAR, 0);
- X if (do_blink) {
- X if (pop_open)
- X window_set(bf, FRAME_CLOSED, FALSE, 0);
- X if (window_get(bf, FRAME_CLOSED) && !blinking) {
- X window_set(bf, FRAME_ICON, bad, 0);
- X blinking = TRUE;
- X bad_is_up = TRUE;
- X menu_set(stop_blink, MENU_INACTIVE, FALSE, 0);
- X }
- X beep_count = beep_amount;
- X notify_set_itimer_func(bf, blink_proc, ITIMER_REAL, &timer, NULL);
- X }
- X return(NOTIFY_DONE);
- X}
- X
- X/************************************************************************/
- X/* Routines which parse options, create windows, and main() */
- X/************************************************************************/
- X
- X/************************************************************************/
- Xstatic parse_options(argc, argv)
- X
- Xint *argc;
- Xchar **argv;
- X
- X{ char *s, c;
- X
- X strcpy(good_icon, ICON_DIRECTORY);
- X strcat(good_icon, GOOD_ICON);
- X strcpy(bad_icon, ICON_DIRECTORY);
- X strcat(bad_icon, BAD_ICON);
- X strcpy(inv_icon, ICON_DIRECTORY);
- X strcat(inv_icon, INVERSE_ICON);
- X
- X strcpy(filter_path, getenv("HOME"));
- X strcat(filter_path, "/.contool");
- X
- X while ((c = getopt(argc, argv, "b:c:d:f:g:l:o:pr:s:?", &s)) != EOF)
- X switch (c) {
- X case 'b' : strcpy(bad_icon, s);
- X break;
- X case 'c' : strcpy(filter_path, s);
- X explicit_filters = TRUE;
- X break;
- X case 'd' : if (verify(s, "0123456789"))
- X delete_amt = atoi(s);
- X else {
- X fprintf(stderr, "%s: invalid delete amount: %s\n", program, s);
- X exit(1);
- X }
- X break;
- X case 'f' : strcpy(inv_icon, s);
- X break;
- X case 'g' : strcpy(good_icon, s);
- X break;
- X case 'l' : if (verify(s, "0123456789"))
- X window_set(text, TEXTSW_MEMORY_MAXIMUM, (size_limit = atoi(s)) + TEXT_SIZE_FUZZ, 0);
- X else {
- X fprintf(stderr, "%s: invalid message limit: %s\n", program, s);
- X exit(1);
- X }
- X break;
- X case 'o': if ((logfile = fopen(s, "a")) == NULL) {
- X fprintf(stderr, "%s : can't open logfile: %s\n", program, s);
- X exit(1);
- X }
- X break;
- X case 'p' : pop_open = TRUE;
- X break;
- X case 'r' : if (verify(s, "0123456789"))
- X resolution = atoi(s);
- X else {
- X fprintf(stderr, "%s: invalid timestamp resolution: %s\n", program, s);
- X exit(1);
- X }
- X break;
- X case 's' : if (verify(s, "0123456789"))
- X beep_amount = atoi(s);
- X else {
- X fprintf(stderr, "%s: invalid beep count: %s\n", program, s);
- X exit(1);
- X }
- X break;
- X case '?' : fprintf(stderr, ct_usage);
- X exit(0);
- X break;
- X default : fprintf(stderr, ct_usage);
- X exit(1);
- X }
- X}
- X
- X/************************************************************************/
- Xstatic load_icons()
- X
- X{ char msg[IL_ERRORMSG_SIZE];
- X
- X if ((good_pr = icon_load_mpr(good_icon, msg)) == NULL) {
- X fprintf(stderr, "%s: %s\n", program, msg);
- X exit(1);
- X }
- X good = icon_create(ICON_IMAGE, good_pr,
- X ICON_LABEL, "",
- X ICON_WIDTH, good_pr->pr_size.x,
- X ICON_HEIGHT, good_pr->pr_size.y,
- X 0);
- X icon_width = good_pr->pr_size.x;
- X icon_height = good_pr->pr_size.y;
- X if ((bad_pr = icon_load_mpr(bad_icon, msg)) == NULL) {
- X fprintf(stderr, "%s: %s\n", program, msg);
- X exit(1);
- X }
- X bad = icon_create(ICON_IMAGE, bad_pr,
- X ICON_LABEL, "",
- X ICON_WIDTH, bad_pr->pr_size.x,
- X ICON_HEIGHT, bad_pr->pr_size.y,
- X 0);
- X if (bad_pr->pr_size.x > icon_width)
- X icon_width = bad_pr->pr_size.x;
- X if (bad_pr->pr_size.y > icon_height)
- X icon_height = bad_pr->pr_size.y;
- X if (*inv_icon == '\0')
- X strcpy(inv_icon, bad_icon);
- X if ((inv_pr = icon_load_mpr(inv_icon, msg)) == NULL) {
- X fprintf(stderr, "%s: %s\n", program, msg);
- X exit(1);
- X }
- X inverse = icon_create(ICON_IMAGE, inv_pr,
- X ICON_LABEL, "",
- X ICON_WIDTH, inv_pr->pr_size.x,
- X ICON_HEIGHT, inv_pr->pr_size.y,
- X 0);
- X if (inv_pr->pr_size.x > icon_width)
- X icon_width = inv_pr->pr_size.x;
- X if (inv_pr->pr_size.y > icon_height)
- X icon_height = inv_pr->pr_size.y;
- X window_set(bf, FRAME_ICON, good, 0);
- X}
- X
- X/************************************************************************/
- Xmain(argc, argv)
- X
- Xint argc;
- Xchar **argv;
- X
- X{ char *path, *open_psuedo_tty(), **saveargs();
- X int i;
- X Menu menu;
- X
- X program = strsave(argv[0]);
- X
- X bf = window_create(NULL, FRAME,
- X FRAME_ARGC_PTR_ARGV, &argc, argv,
- X FRAME_LABEL, TOOL_LABEL,
- X 0);
- X text = window_create(bf, TEXTSW,
- X TEXTSW_DISABLE_CD, TRUE,
- X TEXTSW_DISABLE_LOAD, TRUE,
- X TEXTSW_AGAIN_RECORDING, FALSE,
- X TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY,
- X TEXTSW_MEMORY_MAXIMUM, size_limit + TEXT_SIZE_FUZZ,
- X 0);
- X open_rect = *((Rect *) window_get(bf, FRAME_OPEN_RECT));
- X
- X argv = saveargs(argc, argv);
- X parse_options(&argc, argv);
- X if (argc != 1) {
- X fprintf(stderr, ct_usage);
- X exit(1);
- X }
- X
- X load_icons();
- X
- X path = open_psuedo_tty(&master, "r", &slave, "w");
- X if (master == NULL) {
- X fprintf(stderr, "%s: couldn't open any psuedo-tty\n");
- X exit(1);
- X }
- X if (slave == NULL) {
- X fprintf(stderr, "%s: couldn't open slave side of %s\n", program, path);
- X exit(1);
- X }
- X
- X i = fcntl(fileno(master), F_GETFL, 0);
- X i |= FNDELAY;
- X if (fcntl(fileno(master), F_SETFL, i) == -1) {
- X fprintf(stderr, "%s: could not force %s to non-blocking i/o\n", program, path);
- X exit(1);
- X }
- X
- X acquire_console(path);
- X
- X stop_blink = menu_create_item(MENU_STRING, "Stop Blinking",
- X MENU_INACTIVE, TRUE,
- X MENU_ACTION_PROC, stop_blinking,
- X 0);
- X menu = menu_create(MENU_APPEND_ITEM, stop_blink,
- X MENU_ACTION_ITEM, "Become Console", acquire_console,
- X MENU_ACTION_ITEM, "Clear Messages", clear_messages,
- X MENU_PULLRIGHT_ITEM, "Frame", window_get(bf, WIN_MENU),
- X 0);
- X window_set(bf, WIN_MENU, menu, 0);
- X
- X notify_set_input_func(bf, input_func, fileno(master));
- X notify_interpose_destroy_func(bf, destroy_proc);
- X notify_interpose_event_func(bf, close_proc, NOTIFY_SAFE);
- X
- X load_filters();
- X
- X window_main_loop(bf);
- X}
- END_OF_FILE
- if test 21726 -ne `wc -c <'contool.c'`; then
- echo shar: \"'contool.c'\" unpacked with wrong size!
- fi
- # end of 'contool.c'
- fi
- if test -f 'contool.man' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'contool.man'\"
- else
- echo shar: Extracting \"'contool.man'\" \(4928 characters\)
- sed "s/^X//" >'contool.man' <<'END_OF_FILE'
- X.TH CONTOOL 1 "10 December 1986"
- X.SH NAME
- Xcontool \- capture and display console output
- X.SH SYNOPSIS
- X.IP "\fBcontool\fP"
- X[\fB\(hyb\fP \fIfile\fP] [\fB\(hyc\fP \fIfile\fP] [\fB\(hyd\fP \fIsize\fP] [\fB\(hyf\fP \fIfile\fP] [\fB\(hyg\fP \fIfile\fP] [\fB\(hyl\fP \fIsize\fP] [\f3\(hyo\fP \f2logfile\fP] [\f3\(hyp\fP] [\f3\(hyr\fP \f2amount\fP] [\f3\(hys\fP \f2count\fP]
- X.SH DESCRIPTION
- X.LP
- X\f2Contool\fP captures and displays any messages sent to the system console.
- XEach message is timestamped as it arrives. The messages are displayed in a
- Xscrolling text window, so the user can scroll through old messages.
- X.LP
- XWhen a message arrives, \f3contool\fP will beep and, if closed, begin
- Xblinking its icon until the user opens the tool. This behavior can be changed
- Xwith the various options, described below.
- X.LP
- X\f2Contool\fP must be run under \f2suntools\fP(1), and accepts the
- Xstandard window command line options.
- X.LP
- X\f2Contool\fP can be configured to ignore certain console messages using
- Xentries in the file ~/.contool. Each line in the file has the format
- X\*(lq\f2action start\fP [ \f3to\fP \f2stop\fP ]\*(rq. The \fIstart\fP and
- X\fIstop\fP strings are regular expressions, as described in \fIed\fP(1).
- XEach line of text written
- Xto the console is compared against the list of \f2start\fP strings. A match
- Xcauses the \f2action\fP to take place. If the \f2action\fP is \f3quiet\fP, the
- Xmessage is written to the console, but no beeping or blinking occurs. If it
- Xis \f3ignore\fP, the message is thrown away. If the optional \f3to\fP clause is
- Xincluded, the desired \f2action\fP remains in effect until a line matching the \f2stop\fP
- Xstring is encountered. Comments can be introduced into the file using the '#'
- Xcharacter.
- X.SH OPTIONS
- X.IP "\fB\\(hyb\fP \fIfile\fP"
- Xspecifies the \*(lqbad\*(rq icon to be displayed when a message
- Xhas arrived on the console. The \f2file\fP must be in the format used by
- X\f2iconedit\fP(1).
- X.IP "\fB\\(hyc\fP \fIfile\fP"
- Xspecifies a different filter file. If \fB\(hyc\fP is not used, \fIcontool\fP
- Xwill read filters from ~/.contool, if it exists.
- X.IP "\fB\\(hyd\fP \fIsize\fP"
- Xsets the amount of text that will be removed from the front of the message
- Xlog when the message size limit (see \fB\(hyl\fP, below) is exceeded. At
- Xleast \fIsize\fP bytes will be removed, along with any text up to the start
- Xof the next message. The default value is 1024 bytes.
- X.IP "\fB\\(hyf\fP \fIfile\fP"
- Xspecifies the \*(lqflash\*(rq icon which is alternated with the
- Xbad icon (see \f3\(hyb\fP, above) when a message has arrived on the console.
- XLike \f3\(hyb\fP, the file must be in the format used by \f2iconedit\fP(1).
- XTo disable the flashing feature, specify \*(lq\*(rq as the \f2file\fP.
- X.IP "\fB\\(hyg\fP \fIfile\fP"
- Xspecifies the \*(lqgood\*(rq icon which is displayed when
- Xno unviewed messages are present on the console. This icon is displayed
- Xwhen the user closes \f2contool\fP, and remains displayed until a new message
- Xarrives. Like \f3\(hyb\fP and \f3\(hyf\fP, the \f2file\fP must be in the
- Xformat used by \f2iconedit\fP(1).
- X.IP "\fB\\(hyl\fP \fIsize\fP"
- Xsets the limit, in bytes, on the number of messages that will be saved.
- XWhen a message would exceed this limit, some number of bytes of text (see
- X\fB\(hyd\fP, above) will be deleted from the start of the message log. The
- Xdefault value is 32768 bytes.
- X.IP "\fB\\(hyo\fP \fIfile\fP"
- Xinstructs contool to keep a log of all messages (that are accepted by
- Xthe filters) into the named \fIfile\fP. This is useful for logging the
- Xconsole messages from a network of workstations into files on a
- Xserver, making administration of such a network much simpler. Care
- Xshould be exercised in logging multiple machines to the one file; NFS
- Xsometimes doesn't append if concurrent updates are done. This may be
- Xan NFS bug.
- X.IP "\f3\(hyp\fP"
- Xcauses contool to pop open when a message arrives. By default,
- Xcontool stays closed and blinks when messages arrive.
- X.IP "\f3\(hyr\fP \f2amount\fP"
- Xcontrols the resolution of the timestamps placed in the
- Xmessage display. Normally, a message is not timestamped if it has arrived
- Xwithin sixty seconds of the last timestamp. This prevents a cascade
- Xof messages from receiving several, identical timestamps. If this option
- Xis specified, the \f2amount\fP indicates the time, in seconds, to allow
- Xbetween timestamps.
- X.IP "\f3\(hys\fP \f2count\fP"
- Xchanges the number of times \f2contool\fP will sound the bell
- Xwhen a message arrives. To disable the bell, set the \f2count\fP to zero.
- X.SH FILES
- X.ta 2i
- Xcontool.icon default \f3\(hyg\fP icon
- X.br
- Xstopsign.icon default \f3\(hyb\fP icon
- X.br
- Xstopsign_inv.icon default \f3\(hyf\fP icon
- X.br
- X~/.contool filter pattern file
- X.SH AUTHOR
- X.LP
- XChuck Musciano
- X.br
- XAdvanced Technology Department
- X.br
- XHarris Corporation
- X.br
- X(407) 727-6131
- X.br
- XARPA: chuck@trantor.harris-atd.com
- X.SH BUGS
- X.LP
- X\f2Contool\fP is a view-only tool, and there is no way to type commands
- Xon the console.
- END_OF_FILE
- if test 4928 -ne `wc -c <'contool.man'`; then
- echo shar: \"'contool.man'\" unpacked with wrong size!
- fi
- # end of 'contool.man'
- fi
- if test -f 'misc.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'misc.c'\"
- else
- echo shar: Extracting \"'misc.c'\" \(6517 characters\)
- sed "s/^X//" >'misc.c' <<'END_OF_FILE'
- X/************************************************************************/
- X/* Copyright 1988 by Chuck Musciano and Harris Corporation */
- X/* */
- X/* Permission to use, copy, modify, and distribute this software */
- X/* and its documentation for any purpose and without fee is */
- X/* hereby granted, provided that the above copyright notice */
- X/* appear in all copies and that both that copyright notice and */
- X/* this permission notice appear in supporting documentation, and */
- X/* that the name of Chuck Musciano and Harris Corporation not be */
- X/* used in advertising or publicity pertaining to distribution */
- X/* of the software without specific, written prior permission. */
- X/* Chuck Musciano and Harris Corporation make no representations */
- X/* about the suitability of this software for any purpose. It is */
- X/* provided "as is" without express or implied warranty. */
- X/************************************************************************/
- X
- X
- X/************************************************************************/
- X/* */
- X/* misc: miscellaneous support routines for contool */
- X/* */
- X/************************************************************************/
- X
- X#include <stdio.h>
- X#include <ctype.h>
- X
- X/************************************************************************/
- X/* */
- X/* getline read a line from a stream, removing the newline */
- X/* and returning the length of the line. */
- X/* */
- X/************************************************************************/
- X
- Xint getline(stream, string, max)
- X
- XFILE *stream;
- Xchar *string;
- Xint max;
- X
- X{ register int i, j;
- X
- X i = (int) fgets(string, max, stream);
- X if (i == NULL)
- X return(EOF);
- X j = strlen(string);
- X if (j > 0 && string[j - 1] == '\n')
- X string[--j] = '\0';
- X return(j);
- X}
- X
- X/************************************************************************/
- X/* */
- X/* getopt extract options and their parameters from a */
- X/* list of strings (most likely the command line */
- X/* arguments. */
- X/* */
- X/* The 'opts' descriptor is a string of letters, */
- X/* indicating which options are valid. If a */
- X/* letter is followed by a ':', that option is */
- X/* assumed to have a parameter following it. */
- X/* Getopt returns the discovered option, NULL when */
- X/* an illegal option is found, and EOF when no */
- X/* more options are found. Options and their */
- X/* parameters are removed from the string list. */
- X/* */
- X/************************************************************************/
- X
- Xstatic delarg(argc, argv)
- X
- Xint *argc;
- Xchar **argv;
- X
- X{ char *p;
- X
- X while (*argv = *(argv+1))
- X argv++;
- X (*argc)--;
- X}
- X
- Xchar getopt(argc, argv, opts, parm)
- X
- Xint *argc;
- Xchar **argv;
- Xchar *opts;
- Xchar **parm;
- X
- X{ char c, *p, *strcpy(), *index();
- X int killed;
- X
- X *parm = NULL;
- X while (*argv && ((**argv != '-') || (*(*argv+1) == '\0')))
- X argv++;
- X if (*argv == NULL)
- X return(EOF);
- X c = *(*argv+1);
- X *++(*argv) = '-';
- X if (killed = (*(*argv+1) == '\0'))
- X delarg(argc, argv);
- X if ((p = index(opts, c)) == NULL)
- X c = '\0';
- X else if (*(p+1) == ':') {
- X *parm = killed ? *argv : *argv+1;
- X delarg(argc, argv);
- X }
- X return(c);
- X}
- X
- X/************************************************************************/
- X/* */
- X/* lower convert a string to lower case */
- X/* */
- X/************************************************************************/
- X
- Xchar *lower(s)
- X
- Xchar *s;
- X
- X{ char *p;
- X
- X p = s;
- X while (*s) {
- X if (isupper(*s))
- X *s = tolower(*s);
- X s++;
- X }
- X return(p);
- X}
- X
- X/************************************************************************/
- X/* */
- X/* verify(source, valid) */
- X/* */
- X/* char *source; */
- X/* char *valid; */
- X/* */
- X/* This routine verifies that every character in source is also in */
- X/* valid. */
- X/* */
- X/************************************************************************/
- X
- Xverify(source, valid)
- X
- Xchar *source;
- Xchar *valid;
- X
- X{ register char *s;
- X
- X for ( ; *source; source++) {
- X for (s = valid; *s && *s != *source; s++)
- X ;
- X if (*s == '\0')
- X return(0);
- X }
- X return(1);
- X}
- X
- X/************************************************************************/
- X/* */
- X/* saveargs Replicate and return a pointer to the argument */
- X/* list passed in. */
- X/* */
- X/************************************************************************/
- X
- Xchar **saveargs(argc, argv)
- X
- Xint argc;
- Xchar **argv;
- X
- X{ int i;
- X char **copy;
- X
- X copy = (char **) malloc((argc + 1) * sizeof(char *));
- X for (i = 0; i < argc; i++)
- X strcpy(copy[i] = (char *) malloc(strlen(argv[i]) + 1), argv[i]);
- X copy[i] = (char *) 0;
- X return(copy);
- X}
- X
- X/************************************************************************/
- X/* */
- X/* tokenize break a line into tokens */
- X/* */
- X/************************************************************************/
- X
- Xtokenize(line, argc, argv, max)
- X
- Xchar *line;
- Xint *argc;
- Xchar *argv[];
- Xint max;
- X
- X{ char *buf, match;
- X
- X *argc = 0;
- X buf = (char *) malloc(strlen(line) * 2 + 1);
- X while (*line && (*argc < (max-1))) {
- X while (isspace(*line))
- X line++;
- X argv[(*argc)++] = buf;
- X switch (*line) {
- X case '"' :
- X case '\'' : match = *line++; /* remove the quote mark */
- X while (*line && (*line != match))
- X *buf++ = *line++;
- X if (*line)
- X line++; /* wipe out quote mark */
- X break;
- X default : while (*line && !isspace(*line) && (*line != '"') && (*line != '\''))
- X *buf++ = *line++;
- X break;
- X }
- X *buf++ = '\0';
- X }
- X *buf = '\0';
- X argv[*argc] = (char *) 0;
- X}
- X
- X/************************************************************************/
- X/* */
- X/* open_psuedo_tty opens the first available psuedo terminal */
- X/* */
- X/************************************************************************/
- X
- X#define P_POS 5
- X#define L_POS 8
- X#define D_POS 9
- X
- X#define PATH "/dev/ptyp0"
- X#define LETTERS "pqr"
- X#define DIGITS "0123456789abcdef"
- X
- Xstatic char path[12];
- X
- Xchar *open_psuedo_tty(master, m_mode, slave, s_mode)
- X
- XFILE **master;
- Xchar *m_mode;
- XFILE **slave;
- Xchar *s_mode;
- X
- X{ char *s, *t;
- X
- X strcpy(path, PATH);
- X for (s = LETTERS; *s && *master == NULL; s++) {
- X path[L_POS] = *s;
- X for (t = DIGITS; *t && *master == NULL; t++) {
- X path[D_POS] = *t;
- X *master = fopen(path, m_mode);
- X }
- X }
- X if (*master != NULL) {
- X path[P_POS] = 't';
- X *slave = fopen(path, s_mode);
- X path[P_POS] = 'p';
- X }
- X return(path);
- X}
- END_OF_FILE
- if test 6517 -ne `wc -c <'misc.c'`; then
- echo shar: \"'misc.c'\" unpacked with wrong size!
- fi
- # end of 'misc.c'
- fi
- if test -f 'sample.filter' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'sample.filter'\"
- else
- echo shar: Extracting \"'sample.filter'\" \(480 characters\)
- sed "s/^X//" >'sample.filter' <<'END_OF_FILE'
- X# quietly retain chuck going su:
- XQUIET 'SU: chuck'
- X
- X# ignore Frame Maker coming up:
- XIGNORE 'maker: Starting Frame Maker' TO 'maker: finished loading'
- X
- X# ignore Frame Writer coming up:
- XIGNORE 'writer: Starting Frame Writer' TO 'writer: finished loading'
- X
- X# ignore window data lock messages
- XIGNORE 'Window data lock' TO 'The offending process'
- X
- X# retain some window messages
- XQUIET 'WIN ioctl number'
- X
- X# retain another crazy window system message
- XQUIET 'A tty window' TO 'Its child'
- END_OF_FILE
- if test 480 -ne `wc -c <'sample.filter'`; then
- echo shar: \"'sample.filter'\" unpacked with wrong size!
- fi
- # end of 'sample.filter'
- fi
- if test ! -d 'icons' ; then
- echo shar: Creating directory \"'icons'\"
- mkdir 'icons'
- fi
- if test -f 'icons/console1.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'icons/console1.icon'\"
- else
- echo shar: Extracting \"'icons/console1.icon'\" \(1933 characters\)
- sed "s/^X//" >'icons/console1.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0003,0xFFFF,0xFFFF,0xF800,0x0004,0x0000,0x0000,0x0600,
- X 0x0004,0x7FFF,0xFFFF,0xC500,0x0004,0x8000,0x0000,0x2480,
- X 0x0005,0x0000,0x0000,0x1440,0x0005,0x0000,0x0000,0x1440,
- X 0x0005,0x0000,0x0000,0x1440,0x0005,0x0718,0xA000,0x1440,
- X 0x0005,0x0824,0xD000,0x1440,0x0005,0x0824,0x93C0,0x1440,
- X 0x0005,0x0824,0x9000,0x1440,0x0005,0x0718,0x9000,0x1440,
- X 0x0005,0x0000,0x0000,0x1440,0x0005,0x0000,0x0000,0x1440,
- X 0x0005,0x0000,0x0000,0x1440,0x0005,0x0000,0x0000,0x1440,
- X 0x0005,0x0000,0x0180,0x1440,0x0005,0x001C,0x6086,0x1440,
- X 0x0005,0x0020,0x9089,0x1440,0x0005,0x0018,0x908E,0x1440,
- X 0x0005,0x0004,0x9088,0x1440,0x0005,0x0038,0x6087,0x1440,
- X 0x0005,0x0000,0x0000,0x1480,0x0005,0x0000,0x0000,0x1480,
- X 0x0005,0x0000,0x0000,0x1500,0x0005,0x0000,0x0000,0x1500,
- X 0x001C,0x8000,0x0000,0x2600,0x0064,0x7FFF,0xFFFF,0xC600,
- X 0x0084,0x0000,0x0000,0x0400,0x0103,0xFFFF,0xFFFF,0xF800,
- X 0x0200,0x0004,0x0100,0x0000,0x0400,0x0004,0x0100,0x0000,
- X 0x080F,0xFFF8,0x00FF,0xFFE0,0x081F,0xFFF8,0x00FF,0xFFD0,
- X 0x081F,0xFFFC,0x01FF,0xFFD0,0x083F,0xFFFF,0xFFFF,0xFFA0,
- X 0x083F,0xFFFF,0xFFFF,0xFFA0,0x0820,0x0000,0x0000,0x0040,
- X 0x0820,0x0000,0x0000,0x0040,0x083F,0xFFFF,0xFFFF,0xFF80,
- X 0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,
- X 0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,
- X 0x0800,0x0000,0x0000,0x0000,0x047F,0xFFFF,0xFFFF,0xFF00,
- X 0x0380,0x0000,0x0000,0x0200,0x008A,0xAAAA,0xAAAA,0x8200,
- X 0x0100,0x0000,0x0000,0x0400,0x0115,0x5555,0x5554,0x8400,
- X 0x0200,0x0000,0x0001,0x0800,0x020D,0xFFFF,0xFFDB,0x0800,
- X 0x0400,0x0000,0x0000,0x1000,0x07FF,0xFFFF,0xFFFF,0xF000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
- END_OF_FILE
- if test 1933 -ne `wc -c <'icons/console1.icon'`; then
- echo shar: \"'icons/console1.icon'\" unpacked with wrong size!
- fi
- # end of 'icons/console1.icon'
- fi
- if test -f 'icons/console1_bad.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'icons/console1_bad.icon'\"
- else
- echo shar: Extracting \"'icons/console1_bad.icon'\" \(1933 characters\)
- sed "s/^X//" >'icons/console1_bad.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0003,0xFFFF,0xFFFF,0xF800,0x0004,0x0000,0x0000,0x0600,
- X 0x0004,0x7FFF,0xFFFF,0xC500,0x0004,0x8000,0x0000,0x2480,
- X 0x0005,0x0000,0x0000,0x1440,0x0005,0x0000,0x0000,0x1440,
- X 0x0005,0x0000,0x0000,0x1440,0x0005,0x00A1,0x8880,0x1440,
- X 0x0005,0x00D2,0x4880,0x1440,0x0005,0x0093,0x8A80,0x1440,
- X 0x0005,0x0092,0x0A80,0x1440,0x0005,0x0091,0xC500,0x1440,
- X 0x0005,0x0000,0x0000,0x1440,0x0005,0x0000,0x0000,0x1440,
- X 0x0005,0x0000,0x0000,0x1440,0x0005,0x0347,0x1C70,0x1440,
- X 0x0005,0x02A8,0x2480,0x1440,0x0005,0x02A6,0x2460,0x1440,
- X 0x0005,0x02A1,0x1C10,0x1440,0x0005,0x02AE,0x04E0,0x1440,
- X 0x0005,0x0000,0x3800,0x1440,0x0005,0x0000,0x0000,0x1440,
- X 0x0005,0x0000,0x0000,0x1480,0x0005,0x0000,0x0000,0x1480,
- X 0x0005,0x0000,0x0000,0x1500,0x0005,0x0000,0x0000,0x1500,
- X 0x001C,0x8000,0x0000,0x2600,0x0064,0x7FFF,0xFFFF,0xC600,
- X 0x0084,0x0000,0x0000,0x0400,0x0103,0xFFFF,0xFFFF,0xF800,
- X 0x0200,0x0004,0x0100,0x0000,0x0400,0x0004,0x0100,0x0000,
- X 0x080F,0xFFF8,0x00FF,0xFFE0,0x081F,0xFFF8,0x00FF,0xFFD0,
- X 0x081F,0xFFFC,0x01FF,0xFFD0,0x083F,0xFFFF,0xFFFF,0xFFA0,
- X 0x083F,0xFFFF,0xFFFF,0xFFA0,0x0820,0x0000,0x0000,0x0040,
- X 0x0820,0x0000,0x0000,0x0040,0x083F,0xFFFF,0xFFFF,0xFF80,
- X 0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,
- X 0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,
- X 0x0800,0x0000,0x0000,0x0000,0x047F,0xFFFF,0xFFFF,0xFF00,
- X 0x0380,0x0000,0x0000,0x0200,0x008A,0xAAAA,0xAAAA,0x8200,
- X 0x0100,0x0000,0x0000,0x0400,0x0115,0x5555,0x5554,0x8400,
- X 0x0200,0x0000,0x0001,0x0800,0x020D,0xFFFF,0xFFDB,0x0800,
- X 0x0400,0x0000,0x0000,0x1000,0x07FF,0xFFFF,0xFFFF,0xF000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
- END_OF_FILE
- if test 1933 -ne `wc -c <'icons/console1_bad.icon'`; then
- echo shar: \"'icons/console1_bad.icon'\" unpacked with wrong size!
- fi
- # end of 'icons/console1_bad.icon'
- fi
- if test -f 'icons/console1_flash.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'icons/console1_flash.icon'\"
- else
- echo shar: Extracting \"'icons/console1_flash.icon'\" \(1933 characters\)
- sed "s/^X//" >'icons/console1_flash.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0003,0xFFFF,0xFFFF,0xF800,0x0004,0x0000,0x0000,0x0600,
- X 0x0004,0x7FFF,0xFFFF,0xC500,0x0004,0xFFFF,0xFFFF,0xE480,
- X 0x0005,0xFFFF,0xFFFF,0xF440,0x0005,0xFFFF,0xFFFF,0xF440,
- X 0x0005,0xFFFF,0xFFFF,0xF440,0x0005,0xFF5E,0x777F,0xF440,
- X 0x0005,0xFF2D,0xB77F,0xF440,0x0005,0xFF6C,0x757F,0xF440,
- X 0x0005,0xFF6D,0xF57F,0xF440,0x0005,0xFF6E,0x3AFF,0xF440,
- X 0x0005,0xFFFF,0xFFFF,0xF440,0x0005,0xFFFF,0xFFFF,0xF440,
- X 0x0005,0xFFFF,0xFFFF,0xF440,0x0005,0xFCB8,0xE38F,0xF440,
- X 0x0005,0xFD57,0xDB7F,0xF440,0x0005,0xFD59,0xDB9F,0xF440,
- X 0x0005,0xFD5E,0xE3EF,0xF440,0x0005,0xFD51,0xFB1F,0xF440,
- X 0x0005,0xFFFF,0xC7FF,0xF440,0x0005,0xFFFF,0xFFFF,0xF440,
- X 0x0005,0xFFFF,0xFFFF,0xF480,0x0005,0xFFFF,0xFFFF,0xF480,
- X 0x0005,0xFFFF,0xFFFF,0xF500,0x0005,0xFFFF,0xFFFF,0xF500,
- X 0x001C,0xFFFF,0xFFFF,0xE600,0x0064,0x7FFF,0xFFFF,0xC600,
- X 0x0084,0x0000,0x0000,0x0400,0x0103,0xFFFF,0xFFFF,0xF800,
- X 0x0200,0x0004,0x0100,0x0000,0x0400,0x0004,0x0100,0x0000,
- X 0x080F,0xFFF8,0x00FF,0xFFE0,0x081F,0xFFF8,0x00FF,0xFFD0,
- X 0x081F,0xFFFC,0x01FF,0xFFD0,0x083F,0xFFFF,0xFFFF,0xFFA0,
- X 0x083F,0xFFFF,0xFFFF,0xFFA0,0x0820,0x0000,0x0000,0x0040,
- X 0x0820,0x0000,0x0000,0x0040,0x083F,0xFFFF,0xFFFF,0xFF80,
- X 0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,
- X 0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,
- X 0x0800,0x0000,0x0000,0x0000,0x047F,0xFFFF,0xFFFF,0xFF00,
- X 0x0380,0x0000,0x0000,0x0200,0x008A,0xAAAA,0xAAAA,0x8200,
- X 0x0100,0x0000,0x0000,0x0400,0x0115,0x5555,0x5554,0x8400,
- X 0x0200,0x0000,0x0001,0x0800,0x020D,0xFFFF,0xFFDB,0x0800,
- X 0x0400,0x0000,0x0000,0x1000,0x07FF,0xFFFF,0xFFFF,0xF000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
- END_OF_FILE
- if test 1933 -ne `wc -c <'icons/console1_flash.icon'`; then
- echo shar: \"'icons/console1_flash.icon'\" unpacked with wrong size!
- fi
- # end of 'icons/console1_flash.icon'
- fi
- if test -f 'icons/contool.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'icons/contool.icon'\"
- else
- echo shar: Extracting \"'icons/contool.icon'\" \(1933 characters\)
- sed "s/^X//" >'icons/contool.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
- X 0x8003,0xFFFF,0xFFFF,0xF801,0x8004,0x0000,0x0000,0x0601,
- X 0x8004,0x7FFF,0xFFFF,0xC501,0x8004,0x8000,0x0000,0x2481,
- X 0x8005,0x0000,0x0000,0x1441,0x8005,0x3E80,0x0000,0x1441,
- X 0x8005,0x0000,0x0000,0x1441,0x8005,0x0000,0x0000,0x1441,
- X 0x8005,0x0000,0x0000,0x1441,0x8005,0x0000,0x0000,0x1441,
- X 0x8005,0x0000,0x0000,0x1441,0x8005,0x0000,0x0000,0x1441,
- X 0x8005,0x0000,0x0000,0x1441,0x8005,0x0000,0x0000,0x1441,
- X 0x8005,0x0000,0x0000,0x1441,0x8005,0x0000,0x0000,0x1441,
- X 0x8005,0x0000,0x0000,0x1441,0x8005,0x0000,0x0000,0x1441,
- X 0x8005,0x0000,0x0000,0x1481,0x8005,0x0000,0x0000,0x1481,
- X 0x8005,0x0000,0x0000,0x1501,0x8005,0x0000,0x0000,0x1501,
- X 0x801C,0x8000,0x0000,0x2601,0x8064,0x7FFF,0xFFFF,0xC601,
- X 0x8084,0x0000,0x0000,0x0401,0x8103,0xFFFF,0xFFFF,0xF801,
- X 0x8200,0x0004,0x0100,0x0001,0x8400,0x0004,0x0100,0x0001,
- X 0x880F,0xFFF8,0x00FF,0xFFE1,0x881F,0xFFF8,0x00FF,0xFFE1,
- X 0x881F,0xFFFC,0x01FF,0xFFE1,0x883F,0xFFFF,0xFFFF,0xFFE1,
- X 0x883F,0xFFFF,0xFFFF,0xFFE1,0x8820,0x0000,0x0000,0x00E1,
- X 0x8820,0x0000,0x0000,0x00C1,0x847F,0xFFFF,0xFFFF,0xFFC1,
- X 0x8380,0x0000,0x0000,0x0381,0x808A,0xAAAA,0xAAAA,0x8301,
- X 0x8100,0x0000,0x0000,0x0501,0x8115,0x5555,0x5554,0x8501,
- X 0x8200,0x0000,0x0001,0x0A01,0x820D,0xFFFF,0xFFDB,0x0A01,
- X 0x8400,0x0000,0x0000,0x1401,0x87FF,0xFFFF,0xFFFF,0xF401,
- X 0x8400,0x0000,0x0000,0x0801,0x87FF,0xFFFF,0xFFFF,0xF801,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
- X 0x8F80,0x0000,0x0001,0xE001,0x98C0,0x0000,0x0000,0x6001,
- X 0x98C0,0x0000,0x0000,0x6001,0x9807,0xC5E1,0xF0F8,0x61F1,
- X 0x980C,0x6733,0x198C,0x6319,0x980C,0x6633,0x018C,0x6319,
- X 0x980C,0x6631,0xF18C,0x63F9,0x98CC,0x6630,0x198C,0x6301,
- X 0x98CC,0x6633,0x198C,0x6319,0x8F87,0xC631,0xF0F8,0x61F1,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
- X 0x8000,0x0000,0x0000,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF
- END_OF_FILE
- if test 1933 -ne `wc -c <'icons/contool.icon'`; then
- echo shar: \"'icons/contool.icon'\" unpacked with wrong size!
- fi
- # end of 'icons/contool.icon'
- fi
- if test -f 'icons/contool_bad.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'icons/contool_bad.icon'\"
- else
- echo shar: Extracting \"'icons/contool_bad.icon'\" \(1933 characters\)
- sed "s/^X//" >'icons/contool_bad.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
- X 0x8003,0xFFFF,0xFFFF,0xF801,0x8004,0x0000,0x0000,0x0601,
- X 0x8004,0x7FFF,0xFFFF,0xC501,0x8004,0x8000,0x0000,0x2481,
- X 0x8005,0x7FFF,0xFFFF,0xD441,0x8005,0x417F,0xFFFF,0xD441,
- X 0x8005,0x7FFF,0xFFFF,0xD441,0x8005,0x7FFF,0xFFFF,0xD441,
- X 0x8005,0x7FFF,0xFFFF,0xD441,0x8005,0x7FFF,0xFFFF,0xD441,
- X 0x8005,0x7FFF,0xFFFF,0xD441,0x8005,0x7FFF,0xFFFF,0xD441,
- X 0x8005,0x7FFF,0xFFFF,0xD441,0x8005,0x7FFF,0xFFFF,0xD441,
- X 0x8005,0x7FFF,0xFFFF,0xD441,0x8005,0x7FFF,0xFFFF,0xD441,
- X 0x8005,0x7FFF,0xFFFF,0xD441,0x8005,0x7FFF,0xFFFF,0xD441,
- X 0x8005,0x7FFF,0xFFFF,0xD481,0x8005,0x7FFF,0xFFFF,0xD481,
- X 0x8005,0x7FFF,0xFFFF,0xD501,0x8005,0x7FFF,0xFFFF,0xD501,
- X 0x801C,0x8000,0x0000,0x2601,0x8064,0x7FFF,0xFFFF,0xC601,
- X 0x8084,0x0000,0x0000,0x0401,0x8103,0xFFFF,0xFFFF,0xF801,
- X 0x8200,0x0004,0x0100,0x0001,0x8400,0x0004,0x0100,0x0001,
- X 0x880F,0xFFF8,0x00FF,0xFFE1,0x881F,0xFFF8,0x00FF,0xFFE1,
- X 0x881F,0xFFFC,0x01FF,0xFFE1,0x883F,0xFFFF,0xFFFF,0xFFE1,
- X 0x883F,0xFFFF,0xFFFF,0xFFE1,0x8820,0x0000,0x0000,0x00E1,
- X 0x8820,0x0000,0x0000,0x00C1,0x847F,0xFFFF,0xFFFF,0xFFC1,
- X 0x8380,0x0000,0x0000,0x0381,0x808A,0xAAAA,0xAAAA,0x8301,
- X 0x8100,0x0000,0x0000,0x0501,0x8115,0x5555,0x5554,0x8501,
- X 0x8200,0x0000,0x0001,0x0A01,0x820D,0xFFFF,0xFFDB,0x0A01,
- X 0x8400,0x0000,0x0000,0x1401,0x87FF,0xFFFF,0xFFFF,0xF401,
- X 0x8400,0x0000,0x0000,0x0801,0x87FF,0xFFFF,0xFFFF,0xF801,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
- X 0x8F80,0x0000,0x0001,0xE001,0x98C0,0x0000,0x0000,0x6001,
- X 0x98C0,0x0000,0x0000,0x6001,0x9807,0xC5E1,0xF0F8,0x61F1,
- X 0x980C,0x6733,0x198C,0x6319,0x980C,0x6633,0x018C,0x6319,
- X 0x980C,0x6631,0xF18C,0x63F9,0x98CC,0x6630,0x198C,0x6301,
- X 0x98CC,0x6633,0x198C,0x6319,0x8F87,0xC631,0xF0F8,0x61F1,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
- X 0x8000,0x0000,0x0000,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF
- END_OF_FILE
- if test 1933 -ne `wc -c <'icons/contool_bad.icon'`; then
- echo shar: \"'icons/contool_bad.icon'\" unpacked with wrong size!
- fi
- # end of 'icons/contool_bad.icon'
- fi
- if test -f 'icons/stopsign.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'icons/stopsign.icon'\"
- else
- echo shar: Extracting \"'icons/stopsign.icon'\" \(1933 characters\)
- sed "s/^X//" >'icons/stopsign.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0x8888,0xBFFF,0xFFFC,0x8888,0x8888,0xC000,0x0002,0x8888,
- X 0x2222,0x8000,0x0001,0x2222,0x2223,0x0FFF,0xFFF0,0xA222,
- X 0x888A,0x1FFF,0xFFF8,0x4888,0x888C,0x3FFF,0xFFFC,0x2888,
- X 0x2228,0x7FFF,0xFFFE,0x1222,0x2230,0xFFFF,0xFFFF,0x0A22,
- X 0x88A1,0xFFFF,0xFFFF,0x8488,0x8843,0xFFFF,0xFFFF,0xC288,
- X 0x2287,0xFFFF,0xFFFF,0xE122,0x230F,0xFFFF,0xFFFF,0xF0A2,
- X 0x8A1F,0xFFFF,0xFFFF,0xF848,0x8C3F,0xFFFF,0xFFFF,0xFC28,
- X 0x287F,0xFFFF,0xFFFF,0xFE12,0x30FF,0xFFFF,0xFFFF,0xFF0A,
- X 0xA1FF,0xFFFF,0xFFFF,0xFF84,0xC3FF,0xFFFF,0xFFFF,0xFFC2,
- X 0x87FF,0xFFFF,0xFFFF,0xFFE1,0x8FFF,0xFFFF,0xFFFF,0xFFF1,
- X 0x8FFF,0xFFFF,0xFFFF,0xFFF1,0x8FFF,0xFFFF,0xFFFF,0xFFF1,
- X 0x8FFF,0xFFFF,0xFFFF,0xFFF1,0x8FFF,0xFFFF,0xFFFF,0xFFF1,
- X 0x8FF0,0x0C00,0xF87C,0x03F1,0x8FE7,0xCDCE,0xF73E,0x79F1,
- X 0x8FCF,0xEFCF,0xEF9E,0x7CF1,0x8FCF,0xEFCF,0xEFCE,0x7CF1,
- X 0x8FC7,0xFFCF,0xCFCE,0x7CF1,0x8FE1,0xFFCF,0xCFCE,0x79F1,
- X 0x8FF0,0xFFCF,0xCFCE,0x03F1,0x8FFC,0x3FCF,0xCFCE,0x7FF1,
- X 0x8FFF,0x1FCF,0xCFCE,0x7FF1,0x8FFF,0x8FCF,0xCFCE,0x7FF1,
- X 0x8FDF,0xCFCF,0xEFCE,0x7FF1,0x8FDF,0xCFCF,0xE7DE,0x7FF1,
- X 0x8FCF,0x9FCF,0xF3BE,0x7FF1,0x8FC0,0x3F03,0xF87C,0x3FF1,
- X 0x8FFF,0xFFFF,0xFFFF,0xFFF1,0x8FFF,0xFFFF,0xFFFF,0xFFF1,
- X 0x8FFF,0xFFFF,0xFFFF,0xFFF1,0x8FFF,0xFFFF,0xFFFF,0xFFF1,
- X 0x8FFF,0xFFFF,0xFFFF,0xFFF1,0x8FFF,0xFFFF,0xFFFF,0xFFF1,
- X 0x8FFF,0xFFFF,0xFFFF,0xFFF1,0x87FF,0xFFFF,0xFFFF,0xFFE1,
- X 0x43FF,0xFFFF,0xFFFF,0xFFC2,0x21FF,0xFFFF,0xFFFF,0xFF86,
- X 0x90FF,0xFFFF,0xFFFF,0xFF08,0x887F,0xFFFF,0xFFFF,0xFE18,
- X 0x243F,0xFFFF,0xFFFF,0xFC22,0x221F,0xFFFF,0xFFFF,0xF862,
- X 0x890F,0xFFFF,0xFFFF,0xF088,0x8887,0xFFFF,0xFFFF,0xE188,
- X 0x2243,0xFFFF,0xFFFF,0xC222,0x2221,0xFFFF,0xFFFF,0x8622,
- X 0x8890,0xFFFF,0xFFFF,0x0888,0x8888,0x7FFF,0xFFFE,0x1888,
- X 0x2224,0x3FFF,0xFFFC,0x2222,0x2222,0x1FFF,0xFFF8,0x6222,
- X 0x8889,0x0FFF,0xFFF0,0x8888,0x8888,0x8000,0x0001,0x8888,
- X 0x2222,0x4000,0x0002,0x2222,0x2222,0x3FFF,0xFFFE,0x2222
- END_OF_FILE
- if test 1933 -ne `wc -c <'icons/stopsign.icon'`; then
- echo shar: \"'icons/stopsign.icon'\" unpacked with wrong size!
- fi
- # end of 'icons/stopsign.icon'
- fi
- if test -f 'icons/stopsign_inv.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'icons/stopsign_inv.icon'\"
- else
- echo shar: Extracting \"'icons/stopsign_inv.icon'\" \(1933 characters\)
- sed "s/^X//" >'icons/stopsign_inv.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0x8888,0x8888,0x8888,0x8888,0x8888,0xBFFF,0xFFFC,0x8888,
- X 0x2222,0x7FFF,0xFFFE,0x2222,0x2222,0xFFFF,0xFFFF,0x2222,
- X 0x8889,0xE000,0x0007,0x8888,0x888B,0xC000,0x0003,0xC888,
- X 0x2227,0x8000,0x0001,0xE222,0x222F,0x0000,0x0000,0xF222,
- X 0x889E,0x0000,0x0000,0x7888,0x88BC,0x0000,0x0000,0x3C88,
- X 0x2278,0x0000,0x0000,0x1E22,0x22F0,0x0000,0x0000,0x0F22,
- X 0x89E0,0x0000,0x0000,0x0788,0x8BC0,0x0000,0x0000,0x03C8,
- X 0x2780,0x0000,0x0000,0x01E2,0x2F00,0x0000,0x0000,0x00F2,
- X 0x9E00,0x0000,0x0000,0x0078,0xBC00,0x0000,0x0000,0x003C,
- X 0x7800,0x0000,0x0000,0x001E,0x7000,0x0000,0x0000,0x000E,
- X 0xF000,0x0000,0x0000,0x000E,0xF000,0x0000,0x0000,0x000E,
- X 0x7000,0x0000,0x0000,0x000E,0x7000,0x0000,0x0000,0x000E,
- X 0xF00F,0xF3FF,0x0783,0xFC0E,0xF018,0x3231,0x08C1,0x860E,
- X 0x7030,0x1030,0x1061,0x830E,0x7030,0x1030,0x1031,0x830E,
- X 0xF038,0x0030,0x3031,0x830E,0xF01E,0x0030,0x3031,0x860E,
- X 0x700F,0x0030,0x3031,0xFC0E,0x7003,0xC030,0x3031,0x800E,
- X 0xF000,0xE030,0x3031,0x800E,0xF000,0x7030,0x3031,0x800E,
- X 0x7020,0x3030,0x1031,0x800E,0x7020,0x3030,0x1821,0x800E,
- X 0xF030,0x6030,0x0C41,0x800E,0xF03F,0xC0FC,0x0783,0xC00E,
- X 0x7000,0x0000,0x0000,0x000E,0x7000,0x0000,0x0000,0x000E,
- X 0xF000,0x0000,0x0000,0x000E,0xF000,0x0000,0x0000,0x000E,
- X 0x7000,0x0000,0x0000,0x000E,0x7000,0x0000,0x0000,0x000E,
- X 0xF000,0x0000,0x0000,0x000E,0xF800,0x0000,0x0000,0x001E,
- X 0x3C00,0x0000,0x0000,0x003E,0x3E00,0x0000,0x0000,0x007A,
- X 0x8F00,0x0000,0x0000,0x00F8,0x8F80,0x0000,0x0000,0x01E8,
- X 0x23C0,0x0000,0x0000,0x03E2,0x23E0,0x0000,0x0000,0x07A2,
- X 0x88F0,0x0000,0x0000,0x0F88,0x88F8,0x0000,0x0000,0x1E88,
- X 0x223C,0x0000,0x0000,0x3C22,0x223E,0x0000,0x0000,0x7822,
- X 0x888F,0x0000,0x0000,0xF888,0x888F,0x8000,0x0001,0xE888,
- X 0x2223,0xC000,0x0003,0xE222,0x2223,0xE000,0x0007,0xA222,
- X 0x8888,0xFFFF,0xFFFF,0x8888,0x8888,0xFFFF,0xFFFE,0x8888,
- X 0x2222,0x3FFF,0xFFFE,0x2222,0x2222,0x2222,0x2222,0x2222
- END_OF_FILE
- if test 1933 -ne `wc -c <'icons/stopsign_inv.icon'`; then
- echo shar: \"'icons/stopsign_inv.icon'\" unpacked with wrong size!
- fi
- # end of 'icons/stopsign_inv.icon'
- fi
- echo shar: End of shell archive.
- exit 0
-